const { initPool:mysqlInit } = require('./db/mysql.js');
const { initPool:sqliteInit } = require('./db/sqlite.js');

const pool = {};

function start(conf) {
    if(conf.useDb){
        switch (conf.dbType) {
            case "mysql":
                Object.assign(pool, mysqlInit(conf));
                break;
            case "sqlite":
            case "sqlite3":
            default:
                Object.assign(pool, sqliteInit(conf));
                break;
        }
        return pool;
    }
}

function shutdown(){
    console.log("开始关闭db连接池");
    // 等待所有资源归还到连接池
    console.log("等待所有资源归还到连接池");
    pool.drain().then(() => {
        console.log('所有资源已归还到连接池');
        // 销毁连接池
        pool.clear();
        console.log('连接池已销毁');
    }).catch((err) => {
        console.error('关闭连接池时发生错误:', err);
        // 根据需要处理错误，可能包括重试或退出进程
    });
}

module.exports = { start, shutdown }